<?php
/**
* Copyright 2009 Waag Society <http://www.waag.org>
* This file is part of Annotrax.
*
* Annotrax is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License,
* or (at your option) any later version.
*
* Annotrax is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Annotrax.
* If not, see http://www.gnu.org/licenses/gpl.html
*/

?>
<?php
class Admin_PageController extends Zend_Controller_Action{
	public function init(){
		if( !At_User::getInstance()->hasIdentity() ){
			$this->_redirect('/admin/user/login');
			exit;
		}

		$this->_helper->layout->setLayout('admin');
	}

	// default action: forward to list
	public function indexAction(){
		$this->_forward( 'list' );
	}

	/**
	 * list all pages
	 */
	public function listAction(){
		$page = new Default_Model_Page();
		$this->view->pages = $page->fetchAll();
	}

	/**
	 * add a new page
	 */
	public function addAction(){
		$request = $this->getRequest();
		$page = new Default_Model_Page();
		$form    = new Admin_Form_Page( $page );

		if( $request->isPost() && $form->isValid( $request->getPost() ) ){
			$values	  = $form->getValues();
			unset( $values['save'] );

			foreach( $values as $name => $value ){
				$page->$name = $value;
			}

			$page->save();
			$this->_redirect( '/admin/page/list' );
		}

		$this->view->page = $page;
		$this->view->form	 = $form;
	}

	/**
	 * edit a page
	 */
	public function editAction(){
		$request = $this->getRequest();

		$page = new Default_Model_Page( $request->id );
		$form    = new Admin_Form_Page( $page );

		if( $request->isPost() && $form->isValid( $request->getPost() ) ){
			$values	  = $form->getValues();
			$keywords = (object) $values['keywords'];
			unset( $values['save'] );

			foreach( $values as $name => $value ){
				$page->$name = $value;
			}

			$page->save();
			$this->_redirect( '/admin/page/list' );
		}

		$this->view->page = $page;
		$this->view->form	 = $form;
	}

	/**
	 * delete a page
	 */
	public function deleteAction(){
		$request = $this->getRequest();
		$page = new Default_Model_Page( $request->id );
		$form	 = new Zend_Form;

		$form->addElement('submit', 'delete', array('label'	=> 'Delete' ));
		$form->addElement('submit', 'cancel', array('label'	=> 'Cancel' ));

		foreach( $form->getElements() as $element ){
			$element->removeDecorator('DtDdWrapper');
			$element->removeDecorator('Label');
		}
		$form->removeDecorator('HtmlTag');

		if( $this->getRequest()->isPost() && $form->isValid( $this->getRequest()->getPost() ) ){
			if( $request->delete !== null ){
				$page->delete();
			}

			$this->_redirect('/admin/page/list');
		}

		$this->view->form 		= $form;
		$this->view->page	= $page;
	}
}
